Skip to content

Add release-tracker-workflow pipeline for Shaman-based RC testing#2539

Open
deepssin wants to merge 1 commit intoceph:mainfrom
deepssin:release-tracker-workflow
Open

Add release-tracker-workflow pipeline for Shaman-based RC testing#2539
deepssin wants to merge 1 commit intoceph:mainfrom
deepssin:release-tracker-workflow

Conversation

@deepssin
Copy link

This adds a Jenkins pipeline to automate RC testing for release trackers: resolve or pass a Ceph SHA1, wait for it on Shaman, schedule teuthology suites (in parallel), aggregate results, and optionally post to Redmine and send email. There is no build step; the pipeline assumes the SHA1 is already available on shaman.
Note: The job needs to run on a teuthology agent (that means we need to add teuthology-node as an agent). The pipeline is parameterized (e.g. AGENT_LABEL, teuthology paths, Paddles/Pulpito URLs) so it can be adapted to different environments.

This is meant as a starting point for discussion—defaults and layout may need to change depending on how we want to run this in production (e.g. which Jenkins, which agents, credentials). Happy to adjust based on feedback.

string(name: 'CEPH_REPO', defaultValue: 'https://github.com/ceph/ceph.git')
string(name: 'CEPH_BRANCH', defaultValue: 'main')
string(name: 'CEPH_SHA1', defaultValue: '', description: 'Optional: Ceph commit SHA1 to use. If set, run on this SHA1 (must exist on Shaman). Empty = resolve from branch tip.')
string(name: 'RELEASE_VERSION', defaultValue: '')
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this a release version of Ceph? Like a tag?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes , that's right.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you put an example in the description please

@dmick
Copy link
Member

dmick commented Feb 17, 2026

What is a release tracker?

@deepssin
Copy link
Author

What is a release tracker?

The tracker meant for a Ceph release like below -
https://tracker.ceph.com/issues/72316
https://tracker.ceph.com/issues/73906

steps {
script {
def w = "${env.PIPELINE_DIR}/scripts/wait_for_shaman_sha1.py"
if (fileExists(w)) sh "python3 ${w} --branch ${params.CEPH_BRANCH} --sha1 ${env.SHA1} --timeout ${params.SHAMAN_WAIT_TIMEOUT} --interval ${params.SHAMAN_WAIT_INTERVAL}"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's say Ubuntu builds always take 1 hour and CentOS builds always take 2 hours. How does this handle shaman saying, "Yes, Ubuntu is done?" Won't this proceed with scheduling a run for CentOS and Ubuntu because we're not checking for all distros?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@djgalloway Good question. The script already waits for all configured platforms. By default it checks both ubuntu-jammy-default and centos-9-default and only proceeds when the SHA1 is present on all of them (all(...) on line 46). The --platform argument can be customized if different distros are needed.

@djgalloway
Copy link
Contributor

I guess I'm fine with this conceptually. Has it been tested anywhere? I'd like to see it working.

@deepssin
Copy link
Author

deepssin commented Mar 5, 2026

I guess I'm fine with this conceptually. Has it been tested anywhere? I'd like to see it working.

I am working on getting logs for this, will share ASAP

Signed-off-by: deepssin <deepssin@redhat.com>
@deepssin deepssin force-pushed the release-tracker-workflow branch from 24ec0e7 to ea0f0da Compare March 16, 2026 13:10
@deepssin
Copy link
Author

Here are logs from my jenkins instance - release-testing.log
it updated tracker - https://tracker.ceph.com/issues/75290 . Trying to get the soko04 machine added to ceph jenkins and access to test this in upstream jenkins.

@djgalloway
Copy link
Contributor

I just connected soko04 to Jenkins - https://jenkins.ceph.com/computer/10%2E20%2E192%2E14%2Bsoko04/

@deepssin
Copy link
Author

@djgalloway, thanks! -I tried to test the release-tracker pipeline on soko04 it's failing because teuthology hits Paddles over HTTPS and the Sepia cert isn’t trusted for the jenkins-build user. can we add the Sepia CA to the trust store on soko04 so jenkins-build can reach https://paddles-paddles.apps.pok.os.sepia.ceph.com? https://jenkins.ceph.com/view/all/job/preserve-release-tracker-workflow/13/console

@djgalloway
Copy link
Contributor

can we add the Sepia CA to the trust store on soko04

Hm, it actually already is.

dgalloway@soko04:~$ openssl s_client   -connect paddles-paddles.apps.pok.os.sepia.ceph.com:443   -servername paddles-paddles.apps.pok.os.sepia.ceph.com </dev/null   | openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt
depth=1 CN = ingress-operator@1765490096
verify return:1
depth=0 CN = *.apps.pok.os.sepia.ceph.com
verify return:1
DONE
stdin: OK

Does python need to be informed of this somehow?

@dmick
Copy link
Member

dmick commented Mar 17, 2026

fwiw, this works too:

cat testsock.py

import socket
import ssl

c = ssl.create_default_context()
h = 'paddles-paddles.apps.pok.os.sepia.ceph.com'
with socket.create_connection((h,443)) as sock:
    with c.wrap_socket(sock, server_hostname=h) as ssock:
        print(ssock.version())


strace shows that it opens /etc/ssl/certs/ca-certificates.crt

@deepssin
Copy link
Author

Python’s ssl module uses the system CA store (/etc/ssl/certs/ca-certificates.crt), so your test works. The problem is that the requests library (used by teuthology) uses certifi’s bundled certs by default, not the system store. Certifi’s bundle doesn’t include the Sepia CA.

one way is to point requests at the system certs:

export REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt

I've added this as a param in my test pipeline and was able to trigger a teuthology run https://jenkins.ceph.com/view/all/job/preserve-release-tracker-workflow/29/console , but I'm not sure parametrizing the CA bundle path is the right approach. might be we can have this a global variable set on the machine . Thoughts?

@djgalloway
Copy link
Contributor

I put export REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt in jenkins-build user's .bashrc on soko04. The agent will likely need to be restarted for it to take effect, however.

@dmick
Copy link
Member

dmick commented Mar 18, 2026

interesting. On Ubuntu, the system "python3-certifi" library contains the library modified to use /etc/ssl:

$ cat /usr/lib/python3/dist-packages/certifi/core.py
"""
certifi.py
~~~~~~~~~~

This module returns the installation location of
/etc/ssl/certs/ca-certificates.crt or its contents.
"""

DEBIAN_CA_CERTS_PATH = '/etc/ssl/certs/ca-certificates.crt'


def where() -> str:
    return DEBIAN_CA_CERTS_PATH


def contents() -> str:
    with open(where(), "r", encoding="ascii") as data:
        return data.read()

Perhaps we should install it with the system package. Perhaps there are similar things for el systems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants